home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
FROMUTS
/
UNIXLIB37B
/
test
/
c
/
malloctest
< prev
next >
Wrap
Text File
|
1992-12-30
|
2KB
|
158 lines
/* test suite for malloc(3),realloc(3), and free(3) */
/* (c) Copyright 1990 H.Rogers */
#include <stdio.h>
#include <string.h>
#ifdef __STDC__
#include <stdlib.h>
#else
extern void srand();
extern int rand();
extern void *malloc();
extern void *realloc();
extern void free();
#endif
#include <time.h>
#ifndef ARCH
#ifdef __STDC__
extern void __initalloc(void);
#else
extern void __initalloc();
#endif
#endif
#define NBLK 512
#define BLKSIZ 2048
#ifdef M_DEBUG
#ifdef __STDC__
extern void __m_debug(void);
#else
extern void __m_debug();
#endif
#else
#ifdef __STDC__
static void __m_debug(void) { }
#else
static void __m_debug() { }
#endif
#endif
#ifdef __STDC__
static void *alloc(register size_t z)
#else
static void *alloc(z)
register size_t z;
#endif
{
register void *r;
r = malloc(z); if (r) memset(r,0xff,z);
return(r);
}
#ifdef __STDC__
static void *ralloc(register void *r,register size_t z)
#else
static void *ralloc(r,z)
register void *r;
register size_t z;
#endif
{
r = realloc(r,z); if (r) memset(r,0xff,z);
return(r);
}
int main(int argc,char **argv)
{
void *m[NBLK];
int i,j;
void *k;
#ifndef ARCH
__initalloc();
#endif
if (argc < 2) srand(0); else srand(atoi(argv[1]));
printf("stage: 1\n");
for (i = 0; i < NBLK; i++)
m[i] = alloc(rand() & (BLKSIZ-1));
__m_debug();
printf("stage: 2\n");
for (i = 0; i < NBLK; i++)
if (m[i])
{
j = rand() & (BLKSIZ-1);
k = ralloc(m[i],j); if (!k) free(m[i]); m[i] = k;
}
__m_debug();
printf("stage: 3\n");
for (i = 0; i < (NBLK>>2); i++)
{
j = rand() & (NBLK-1);
if (m[j]) { free(m[j]); m[j] = 0; }
}
__m_debug();
printf("stage: 4\n");
for (i = 0; i < NBLK; i++)
if (m[i])
{
j = rand() & (BLKSIZ-1);
k = ralloc(m[i],j); if (!k) free(m[i]); m[i] = k;
}
__m_debug();
printf("stage: 5\n");
for (i = 0; i < (NBLK>>2); i++)
{
j = rand() & (NBLK-1);
if (m[j]) { free(m[j]); m[j] = 0; }
}
__m_debug();
printf("stage: 6\n");
for (i = 0; i < NBLK; i++)
if (!m[i]) m[i] = alloc(rand() & (BLKSIZ-1));
__m_debug();
printf("stage: 7\n");
for (i = 0; i < NBLK; i++)
if (m[i])
{
j = rand() & (BLKSIZ-1);
k = ralloc(m[i],j); if (!k) free(m[i]); m[i] = k;
}
__m_debug();
printf("stage: 8\n");
for (i = 0; i < NBLK; i++)
if (m[i]) free(m[i]);
__m_debug();
return(0);
}